<?php
/**
 * Created by PhpStorm.
 * User: edmmss
 * Date: 2019/1/2
 * Time: 09:39
 */

namespace app\modules\observer\controller;

use app\modules\observer\User;
use app\modules\observer\UserObserver;
use yii\web\Controller;

class DefaultController extends Controller
{
    /**
     * 观察者模式示例
     * 当对象的状态发生变化时，所有依赖于它的对象都得到通知并被自动更新。它使用的是低耦合的方式
     * PHP 已经定义了2个接口用于快速实现观察者模式：SplObserver 和 SplSubject
     *
     * @date   2019/1/2
     * @author edmmss
     * @return bool
     */
    public function actionIndex()
    {
        $observer = new UserObserver();
        $user = new User();
        $user->attach($observer);
        $user->changeEmail('edmmss.163.com');
        $user->changeEmail('edmmss.qq.com');

        var_dump($observer->getChangedUsers());

        return true;
    }
}